#ifndef TETRAHEDRON_H
#define TETRAHEDRON_H

#include "color.h"
#include <vector>

class Face;
class Edge;
class Vertex;

class Tetrahedron{
    public:
        Tetrahedron(int = 0);
        Tetrahedron(int, std::vector<Face *>, std::vector<bool>, Color);
        ~Tetrahedron();

        int getID() const;

        void select(bool);
        bool isSelected();

        void setColor(Color);
        Color getColor();

        void addFace(Face *, bool);
        Face *getFace(int);
        bool getFaceSignal(int);
        std::vector<Face *> getFaces();
        void setFaces(std::vector<Face *>, std::vector<bool>);
        int facesSize();

//        void addEdge(Edge *);
//        Edge *getEdge(int);

        void addVertex(Vertex *);
        Vertex *getVertex(int);

        void print() const;

    private:
        int id;
        bool selected;
        Color color;

        std::vector<Face *> faces;
        std::vector<bool> facesSignals;
//        std::vector<Edge *> edges;
        std::vector<Vertex *> vertices;
};

#endif
